#include <iostream>
#include <string>
#include <unordered_map>
#include <vector>
#include <stack>

using namespace std;
bool isValidParentheses(string& s){
	unordered_map<char, char> matching = {
        {')', '('},
        {']', '['},
        {'}', '{'},
        {'>', '<'}
    };
    stack<char> st;
     for (char ch : s) {
        if (ch == '(' || ch == '[' || ch == '{' || ch == '<') {
            // 左括号：压栈
            st.push(ch);
        } else {
            // 右括号：检查是否匹配
            if (st.empty()) return false; // 栈为空，无法匹配
            if (st.top() != matching[ch]) return false; // 不匹配
            st.pop(); // 匹配成功，弹出栈顶
        }
    }
// 所有字符处理完毕后，栈必须为空才合法
    return st.empty();
}


int main() {
    int t;
    cin >> t;
    for (int test_case = 0; test_case < t; ++test_case) {
        string s;
        cin >> s;
        if (isValidParentheses(s)) {
            cout << "Yes" << endl;
        } else {
            cout << "No" << endl;
        }
    }

    return 0;   
	}